<h1>规则 Bugfinder-2.1</h1>
<h2>常规信息</h2>
<p>项目<br>描述</p>
<p>规则文本<br>覆盖了自增的值。</p>
<p>规则等级<br>必要</p>
<p>分析范围<br>单元</p>
<p>语言标准<br>Java</p>
<p>性能表现<br>快速</p>
<h2>规则释义</h2>
<p>代码中变量执行了一个自增操作 (例如，i++) ，然后立即对其重新写值（例如， i = i++），那么自增后的值就被原始值覆盖了。可能编码人员想当然的认为 i++ 和 i+1 在任何场景下</p>
<p>都是完全等价的，即认为（i = i+1）和（i = i++）是完全等价的。但实际上将（i = i++）拆解开来等价于（temp = i; i++; i = temp;）。</p>
<p>修复或避错建议：</p>
<p>改成 i = i + 1。</p>
<h2>测试样例</h2>
<h3>Testfile Bugfinder_2_1.java</h3>
<p>public class Bugfinder_2_1 {<br>    public int bar(int up) {<br>        int x = up;<br>        if (x &lt;0x55) {<br>            x = x++;  // noncompliant<br>        }<br>        x = 0;<br>        return x;<br>    }<br>}</p>